Incrementalization: From Clarity to Efficiency
نویسنده
چکیده
Incrementalization is at the core of a systematic program design method, especially for the design of algorithms and data structures. It takes a function and an input change operation and yields an incremental function that computes each new output by using the old output and additional values. It is the analogue of differentiation in continuous domains. This article gives an overview of a systematic program design method centered on incrementalization. The method starts with a clear specification of a computation and derives an efficient implementation by semantics-preserving program transformations. The method applies to problems specified in imperative, database, functional, logic, and objectoriented programming languages with different data, control, and module abstractions. We illustrate the method through examples from optimizing compilers, graph algorithms, string processing, and program components. The last section discusses directions for future studies.
منابع مشابه
Pull-Ups, Push-Downs, and Passing It Around - Exercises in Functional Incrementalization
Programs in functional programming languages with algebraic datatypes are often datatype-centric and use folds or fold-like functions. Incrementalization of such a program can significantly improve its performance. Functional incrementalization separates the recursion from the calculation and significantly reduces redundant computation. In this paper, we motivate incrementalization with a simpl...
متن کاملScalable automated incrementalization for real-time static analyses=Skalierbare automatische Inkrementalisierung für statische Analysen in Echtzeit
This thesis proposes a framework for easy development of static analyses, whose results are incrementalized to provide instantaneous feedback in an integrated development environment (IDE). Today, IDEs feature many tools that have static analyses as their foundation to assess software quality and catch correctness problems. Yet, these tools often fail to provide instantaneous feedback and are t...
متن کاملIncrementalization of Static Analyses
Modern development environments integrate various static analyses into the build process. Analyses that require the analysis of the whole project whenever the project changes are impractical in this context. Manual incrementalization is elaborate, in particular if the set of analyses is supposed to be extensible. We present an approach to automatic incrementalization of analyses that are specif...
متن کاملIterate, Incrementalize, and Implement: A systematic approach to efficiency improvement and guarantees
People may more easily specify what they would like to compute if not concerned with how to compute efficiently. Given descriptions that may lead to inefficient computations, can we systematically obtain efficient algorithms and implementations? Can we further have efficiency guarantees for them? We give an overview of a general and systematic method for achieving efficiency improvement and pro...
متن کاملA Systematic Incrementalization Technique and Its Application to Hardware Design a Systematic Incrementalization Technique and Its Application to Hardware Design
A systematic transformation method based on incrementalization and value caching, generalizes a broad family of program improvement techniques. The technique and an interactive tool supporting it are presented. Though highly structured and automatable, better results are obtained through interaction with an external intelligence, whose main task is to provide insight and proofs involving term e...
متن کامل